草庐IT

Java TCP Socket等待空闲?

全部标签

c# - 关闭后连接仍然空闲

我有一个C#客户端应用程序,需要每15分钟检查一次Postgres数据库中的表。问题是我需要将此客户端安装到或多或少200个客户端中,为此我需要在查询后关闭数据库连接。我使用.Close()方法,但是,如果我检查Postgres数据库上的pg_stat_activity表,我可以看到连接仍然处于空闲状态。我该如何解决这个问题?是否可以明确关闭连接?谢谢,安德烈亚 最佳答案 与大多数ADO.NET提供程序一样,Npgsql默认使用连接池。当您Close()NpgsqlConnection对象时,表示Npgsql使用的实际底层连接的内部

c# - 如何使用异步/等待方法管理类似 NDC 的 log4net 堆栈? (每个任务堆栈?)

在普通/同步/单线程控制台应用程序中,NDC.Push可以很好地管理“当前项目”(可能在多个嵌套级别,但对于本示例只有1个级别)。例如:privatestaticILogs_logger=LogManager.GetLogger("Program");staticvoidMain(string[]args){BasicConfigurator.Configure();DoSomeWork("chunk1");DoSomeWork("chunk2");DoSomeWork("chunk3");}staticvoidDoSomeWork(stringchunkName){using(NDC

c# - AsyncLocal<T> 在非异步/等待代码中有什么作用?

我正在处理一个非常大且旧的桌面winform应用程序代码库。在此代码库中,有很多操作在后台线程中执行,主要使用BackgroundWorker。.此代码库中的一个常见模式是通过将工件绑定(bind)到正在执行的线程来隐藏复杂性。例如,数据库连接和事务存储在[ThreadStatic]中字段。我正在尝试改变这一点,并开始使用async/await代码,并受益于在池的任何线程中运行任务,并通过使用ConfigureAwait(false)允许任务在任何其他线程中继续执行.我知道[ThreadStatic]不适合async/await,我在这里阅读了几个建议使用AsyncLocal的答案相反

c# - 为什么使用 async 并等待 Task<>?

如果我有一个普通的方法,我想使其异步:publicintFoo(){}我会这样做:publicTaskFooAsync(){returnTask.Run(()=>Foo());}我为什么要这样做:publicasyncTaskFooAsync(){returnawaitTask.Run(()=>Foo());}我打算使用它的方式是:FooAsync().ContinueWith((res)=>{});我希望该方法不间断地运行,但我希望触发回调之类的东西,因此ContinueWith。但是对于第二个版本,使用它有什么意义吗? 最佳答案

c# - Windows 服务 OnStop 等待完成处理

我实际上在VS2012/.NET4.5中开发了一个Windows服务。该服务遵循以下代码片段的方案:使用计时器每隔几分钟执行一些所需的操作。该过程大约需要10分钟才能完成我在服务中使用单线程我担心的是,如果有人通过管理控制台停止服务,它可能只是在服务正在执行的过程中。我已经阅读了一些关于通过请求停止停止Windows服务的文章,但我有点迷茫。有时会创建WorkerThreads,有时会创建ManualResetEvents,但到目前为止,我无法完全掌握Windows服务的最佳前进方向。在停止Windows服务之前,我需要等到onStop方法中的处理正确完成。那么最好的方法是什么,同时考

c# - 使用 LINQ ForEach() 异步等待

我有以下正确使用异步/等待范式的代码。internalstaticasyncTaskAddReferencseData(ConfigurationDbContextcontext){foreach(varsinkNameinRequiredSinkTypeList){varsinkType=newSinkType(){Name=sinkName};context.SinkTypeCollection.Add(sinkType);awaitcontext.SaveChangesAsync().ConfigureAwait(false);}}如果我不使用foreach(),而是想使用LIN

空条件运算符和等待的 C# 错误

我在C#中使用新的null条件运算符时遇到了一个有趣的System.NullReferenceException。如果“MyObject”为空,以下代码会给我一个NullReferenceException:awaitthis.MyObject?.MyMethod()如果“MyObject”为空,我本以为不会调用“MyMethod”,还是我误解了空条件运算符的用途? 最佳答案 您可以添加??运算符,因此如果?.返回空任务,请改用CompletedTask。await(this.MyObject?.MyMethod()??Task.C

c# - 等待 Selenium Webdriver 更改的最佳实践?

点击事件后,我需要等待元素属性发生变化,然后再继续(点击事件导致某些元素移出焦点,而某些其他元素通过JS获得焦点)在花时间在网络驱动程序中搜索“waitForAttribute”(selenium1命令)的可靠替代方案之后......我可以让下面的代码工作。但我不确定这是否是最好的实现...还有其他更好的解决方案吗?wait=newWebDriverWait(wedriver1,TimeSpan.FromSeconds(5));.....button.Click();wait.Until(webdriver1=>webdriver2.webelement.GetAttribute("s

c# - 等待 Task.Run 与等待

我在网上搜索过很多关于Task.Run和awaitasync的问题,但是有一个具体的使用场景我不太明白其中的区别。我相信场景非常简单。awaitTask.Run(()=>LongProcess());对比awaitLongProcess());LongProcess是一个异步方法,其中包含一些异步调用,例如使用awaitExecuteReaderAsync()调用db。问题:在这个场景下两者有什么区别吗?感谢任何帮助或输入,谢谢! 最佳答案 Task.Run可以将要处理的操作发布到不同的线程。这是唯一的区别。这可能有用-例如,如果L

c# - 编写一个等待 bool 值的异步方法

我想编写一个方法来等待将变量设置为true。这是伪代码。boolIsSomethingLoading=falseSomeDataTheData;publicasyncTaskGetTheData(){awaitIsSomethingLoading==true;returnTheData;}TheData将由PrismEvent与IsSomethingLoading变量一起设置。我调用了GetTheData方法,但我希望它异步运行(现在它只在数据未准备好时返回null。(这会导致其他问题。)有办法吗? 最佳答案 在许多类似的情况下,您